//package com.zjzywl.smoke.repository;
//
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//import javax.websocket.server.PathParam;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//
//import com.zjzywl.smoke.authenticate.AuthUser;
//import com.zjzywl.smoke.config.BaseDataConfig;
//import com.zjzywl.smoke.controller.BaseController;
//import com.zjzywl.smoke.entity.Alarm;
//import com.zjzywl.smoke.entity.Device;
//import com.zjzywl.smoke.entity.Organization;
//import com.zjzywl.smoke.util.PageBean;
//import com.zjzywl.smoke.util.WebResult;
//
//@RestController
//@RequestMapping(value = "/paging")
//public class PagingController extends BaseController {
//	@Autowired
//	private AlarmRepository repository;
//	@Autowired
//	private DeviceRepository deviceRepository;
//	@Autowired
//	private AlarmRepository alarmRepository;
//	
//	// 报警场所总页数
//	@RequestMapping(value = "/fixedPlace/pageNumber")
//	public WebResult getFixedPlacePageNumber(@PathParam("beginTime") String beginTime,
//			@PathParam("endTime") String endTime, @PathParam("alarmTypeCode") String alarmTypeCode,
//			@PathParam("deviceTypeId") String deviceTypeId, @PathParam("fixedPlace") String fixedPlace) {
//		String userId = this.getUserId();
//		List alarmCountByDevice = repository.getAlarmCountByDevice(beginTime, endTime, 0, alarmTypeCode, deviceTypeId,
//				userId, fixedPlace);
//		return pageNumber(alarmCountByDevice.size());
//
//	}
//
//	// 报警场所当前页数据
//	@RequestMapping(value = "/fixedPlace/approve")
//	public WebResult approveFixedPlaceHistory(@PathParam("beginTime") String beginTime,
//			@PathParam("endTime") String endTime, @PathParam("alarmTypeCode") String alarmTypeCode,
//			@PathParam("deviceTypeId") String deviceTypeId, @PathParam("fixedPlace") String fixedPlace,
//			@PathParam("page") int page) {
//		System.out.println("前台传来的页码:" + page);
//		String userId = this.getUserId();
//		List alarmCountByDevice = repository.getAlarmCountByDevice(beginTime, endTime, 0, alarmTypeCode, deviceTypeId,
//				userId, fixedPlace);
//		return approve(alarmCountByDevice, page);
//
//	}
//
//	// 报警原因总页数
//	@RequestMapping(value = "/alarmReasons/pageNumber")
//	public WebResult getAlarmReasonspageNumber(@PathParam("beginTime") String beginTime,
//			@PathParam("endTime") String endTime, @PathParam("alarmCode") String alarmCode,
//			@PathParam("alarmReasons") String alarmReasons) throws ParseException {
//
//		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		Date bTime = format.parse(beginTime);
//		Date eTime = format.parse(endTime);
//		AuthUser userId = this.getLoginUser();
//		String disposePeople = userId.getPeople().getName();
//		List alarmCountByDevice = new ArrayList<>();
//		if (alarmReasons.equals("all")) {
//			alarmCountByDevice = repository.getAlarmReasons(bTime, eTime, alarmCode, disposePeople);
//		} else {
//			alarmCountByDevice = repository.getAlarmReason(bTime, eTime, alarmCode, alarmReasons, disposePeople);
//		}
//
//		return pageNumber(alarmCountByDevice.size());
//
//	}
//
//	// 报警原因当前页数据
//	@RequestMapping(value = "/alarmReasons/approve")
//	public WebResult approveAlarmReasonsHistory(@PathParam("beginTime") String beginTime,
//			@PathParam("endTime") String endTime, @PathParam("alarmCode") String alarmCode,
//			@PathParam("alarmReasons") String alarmReasons, @PathParam("page") int page) throws ParseException {
//
//		System.out.println("前台传来的页码:" + page);
//		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		Date bTime = format.parse(beginTime);
//		Date eTime = format.parse(endTime);
//		AuthUser userId = this.getLoginUser();
//		String disposePeople = userId.getPeople().getName();
//		List alarmCountByDevice = new ArrayList<>();
//		if (alarmReasons.equals("all")) {
//			alarmCountByDevice = repository.getAlarmReasons(bTime, eTime, alarmCode, disposePeople);
//		} else {
//			alarmCountByDevice = repository.getAlarmReason(bTime, eTime, alarmCode, alarmReasons, disposePeople);
//		}
//		return approve(alarmCountByDevice, page);
//
//	}
//
//	// 七日内报警总页数
//	@RequestMapping(value = "/dayAlarm/pageNumber")
//	public WebResult getAlarm(@PathParam("beginTime") String beginTime, @PathParam("endTime") String endTime,
//			@PathParam("alarmTypeCode") String alarmTypeCode, @PathParam("deviceTypeId") String deviceTypeId,
//			@PathParam("address") String address) {
//		String userId = this.getUserId();
//		List alarms = repository.getAlarmByTimeAndAlarmTypeAndAddressAndUser(beginTime, endTime, alarmTypeCode,
//				deviceTypeId, address, userId);
//
//		return pageNumber(alarms.size());
//	}
//
//	// 七日内报警当页数据
//	@RequestMapping(value = "/dayAlarm/approve")
//	public WebResult getDayAlarm(@PathParam("beginTime") String beginTime, @PathParam("endTime") String endTime,
//			@PathParam("alarmTypeCode") String alarmTypeCode, @PathParam("deviceTypeId") String deviceTypeId,
//			@PathParam("address") String address, @PathParam("page") int page) {
//		String userId = this.getUserId();
//		List alarms = repository.getAlarmByTimeAndAlarmTypeAndAddressAndUser(beginTime, endTime, alarmTypeCode,
//				deviceTypeId, address, userId);
//		return approve(alarms, page);
//
//	}
//
//	// 未处理总页数
//	@RequestMapping(value = "/notDeal/pageNumber")
//	@ResponseBody
//	public WebResult getAlarmsByTime() throws ParseException {
//		AuthUser user = getLoginUser();
//		List<Alarm> alarms = repository.getByDisposeStatusAndAlarmTypeAndUser(user.getPeople().getUserId().toString(),
//				0, BaseDataConfig.ALARM_FIRE);
//		return pageNumber(alarms.size());
//	}
//
//	// 未处理总页数
//	@RequestMapping(value = "/notDeal/approve")
//	@ResponseBody
//	public WebResult notDeal(@PathParam("page") int page) throws ParseException {
//		AuthUser user = getLoginUser();
//		List<Alarm> alarms = repository.getByDisposeStatusAndAlarmTypeAndUser(user.getPeople().getUserId().toString(),
//				0, BaseDataConfig.ALARM_FIRE);
//		return approve(alarms, page);
//
//	}
//
//	// 报警总数总页数
//	@RequestMapping(value = "/alarms/pageNumber")
//	@ResponseBody
//	public WebResult getAlarmCountEx(@PathParam("beginTime") String beginTime, @PathParam("endTime") String endTime,
//			@PathParam("alarmTypeCode") String alarmTypeCode) {
//		String bTime = beginTime;
//		String eTime = endTime;
//		String userId = this.getUserId();
//		List alarms = repository.getAlarmCount(bTime, eTime, alarmTypeCode, userId);
//		return pageNumber(alarms.size());
//
//	}
//
//	// 报警总数当前页数据
//	@RequestMapping(value = "/alarms/approve")
//	@ResponseBody
//	public WebResult getAlarmCount(@PathParam("beginTime") String beginTime, @PathParam("endTime") String endTime,
//			@PathParam("alarmTypeCode") String alarmTypeCode, @PathParam("page") int page) {
//		String bTime = beginTime;
//		String eTime = endTime;
//		String userId = this.getUserId();
//		List alarms = repository.getAlarmCount(bTime, eTime, alarmTypeCode, userId);
//		return approve(alarms, page);
//
//	}
//
//	// 统计设备数量总页数
//	@RequestMapping(value = "/device/pageNumber")
//	@ResponseBody
//	public WebResult getCountByDeviceTypeAndUser(@PathParam("devicetypeid") String devicetypeid) {
//		AuthUser userId = this.getLoginUser();
//		Organization org = userId.getPeople().getOrg();
//		int orgId = org.getId();
//		List<Device> alarms = deviceRepository.findByDevice(orgId, devicetypeid);
//		return pageNumber(alarms.size());
//	}
//
//	// 统计设备数量当前页数据
//	@RequestMapping(value = "/device/approve")
//	@ResponseBody
//	public WebResult getDevicerPageNumber(@PathParam("devicetypeid") String devicetypeid, @PathParam("page") int page) {
//		AuthUser userId = this.getLoginUser();
//		Organization org = userId.getPeople().getOrg();
//		int orgId = org.getId();
//		List<Device> alarms = deviceRepository.findByDevice(orgId, devicetypeid);
//		return approve(alarms, page);
//
//	}
//	    
//	//统计异常设备上报信息数量总页数
//		@RequestMapping(value ="/count/pageNumber/{status}/{devicetypeid}/{userId}", method = RequestMethod.GET)
//		public WebResult getCountByStatusAndDeviceTypeAndUser(@PathVariable("status") String status,
//				@PathVariable("devicetypeid") String devicetypeid,@PathVariable("userId") String userId) {
//			List devices= alarmRepository
//					.getDSCountByUserAndDeviceTypeAndStatus(userId, status, devicetypeid);
//			return pageNumber(devices.size());
//		}
//	
//		//统计异常设备上报信息数量总页数
//				@RequestMapping(value ="/count/approve/{status}/{devicetypeid}/{userId}/{page}", method = RequestMethod.GET)
//				public WebResult getCountByStatusApprove(@PathVariable("status") String status,
//						@PathVariable("devicetypeid") String devicetypeid,@PathVariable("userId") String userId,@PathVariable("page") int page) {
//					List devices= alarmRepository
//							.getDSCountByUserAndDeviceTypeAndStatus(userId, status, devicetypeid);
//					return approve(devices, page);
//				}
//	
//	
//	
//	
//
//	// 获取总页数的方法
//	private WebResult pageNumber(int alarms) {
//		// 初始化PageBean对象
//		PageBean pagebean = new PageBean(alarms);
//		// 获得分页大小
//		int pagesize = pagebean.getPageSize();
//		System.out.println("历史记录总页码：" + (alarms + pagesize - 1) / pagesize);
//		return WebResult.OK((alarms + pagesize - 1) / pagesize);
//	}
//
//	// 分页的方法
//	private WebResult approve(List alarms, int page) {
//		PageBean pagebean = new PageBean(alarms.size());// 初始化PageBean对象
//		// 设置当前页
//		pagebean.setCurPage(page); // 这里page是从页面上获取的一个参数，代表页数
//		// 获得分页大小
//		int pagesize = pagebean.getPageSize();
//		// 获得分页数据在list集合中的索引
//		int firstIndex = (page - 1) * pagesize;
//		int toIndex = page * pagesize;
//		// 截取数据集合，获得分页数据
//		if (toIndex > alarms.size()) {
//			toIndex = alarms.size();
//			System.out.println(firstIndex);
//			System.out.println(toIndex);
//			List courseList = alarms.subList(firstIndex, toIndex);
//			return WebResult.OK(courseList);
//		} else if (firstIndex <= 0) {
//			firstIndex = 0;
//			toIndex = pagesize;
//			List courseList = alarms.subList(firstIndex, toIndex);
//			return WebResult.OK(courseList);
//		} else {
//			List courseList = alarms.subList(firstIndex, toIndex);
//			return WebResult.OK(courseList);
//		}
//	}
//	
//
//}
